package com.mocoop.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.data.JPushLocalNotification;

import com.mocoop.activity.MocoopActivity;
import com.mocoop.jfqc.JFQCActivity;
import com.mocoop.jfqc.LoginActivity;
import com.mocoop.jfqc.MainActivity;
import com.mocoop.jfqc.R;

/**
 * 自定义接收器
 * 
 * 如果不定义这个 Receiver，则： 1) 默认用户会打开主界面 2) 接收不到自定义消息
 */
public class MyReceiver extends BroadcastReceiver {
	private static final String TAG = "JPush";

	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle bundle = intent.getExtras();

		if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
			String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
			Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId);
			// send the Registration Id to your server...

		} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
			int id =  bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
			Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: "+id+"----"+JFQCActivity.isInbackgroud()+"-----" + bundle.getString(JPushInterface.EXTRA_MESSAGE));
			if (MocoopActivity.getCurrentView() != null && !JFQCActivity.isInbackgroud()) {
				bundle.putBoolean(JFQCActivity.MESSAGE_ALERT, true);
				processCustomMessage(context, bundle);
			} else {
				JPushLocalNotification ln = new JPushLocalNotification();
				ln.setBuilderId(0);
				ln.setContent(bundle.getString(JPushInterface.EXTRA_MESSAGE));
				ln.setTitle(context.getResources().getString(R.string.app_name));
				ln.setBroadcastTime(System.currentTimeMillis());
				ln.setExtras(bundle.getString(JPushInterface.EXTRA_EXTRA));
				JPushInterface.addLocalNotification(context.getApplicationContext(), ln);
			}

		} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
			Log.d(TAG, "[MyReceiver] 接收到推送下来的通知");
			int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
			Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);

		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
			Log.d(TAG, "[MyReceiver] 用户点击打开了通知");
			Intent i = null;
			
			processCustomMessage(context, bundle);
			
			if(MocoopActivity.getCurrentView() != null){
				i = new Intent(context, MainActivity.class);
			}else{
				i = new Intent(context, LoginActivity.class);
			}
			
			i.putExtras(bundle);
			i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
			context.startActivity(i);

		} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
			Log.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
			// 在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码，比如打开新的Activity，
			// 打开一个网页等..

		} else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
			boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
			Log.w(TAG, "[MyReceiver]" + intent.getAction() + " connected state change to " + connected);
		} else {
			Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());
		}
	}

	// 打印所有的 intent extra 数据

	// send msg to MainActivity
	private void processCustomMessage(Context context, Bundle bundle) {
		Intent msgIntent = new Intent(JFQCActivity.MESSAGE_RECEIVED_ACTION);
		msgIntent.putExtras(bundle);
		context.sendBroadcast(msgIntent);
	}
}
